<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	
	<!-- **************************** Error Handling ************************************* -->
	
	<xsl:template match="imgButton|button|label|textField|textArea|password|checkBox|radioButton|listBox1|listBoxN|fileUpload">
		<xsl:choose>
			<xsl:when test="@hidden='true'"/><!-- ignore hidden elements -->
			<xsl:when test="@error">
				<table border="0" cellspacing="0" cellpadding="3">
					<tr>
						<td bgcolor="red">
							<xsl:apply-templates mode="ctrl" select="."/>
						</td>
					</tr>
				</table>
			</xsl:when>
			<xsl:otherwise>
				<xsl:apply-templates mode="ctrl" select="."/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	
	<!-- **************************** Buttons ************************************* -->
	
	<xsl:template mode="ctrl" match="button[@disabled='true']">
		<input type="button" value="{@label}" disabled="disabled"/>
	</xsl:template>
	
	<xsl:template mode="ctrl" match="button">
		<input type="submit" name="{@id}" value="{@label}">
			<xsl:call-template name="stdattrs"/>
		</input>
	</xsl:template>
	
	<xsl:template mode="ctrl" match="imgButton[@disabled='true']">
		<img src="{$context}/{@src}" title="{@label}" alt="{@label}"/>
	</xsl:template>
	
	<xsl:template mode="ctrl" match="imgButton">
		<input type="image" src="{$context}/{@src}" name="{@id}" title="{@label}" alt="{@label}" class="imgButton">
			<xsl:call-template name="stdattrs"/>
		</input>
	</xsl:template>
	
	<!-- **************************** Label ************************************* -->
	
	<xsl:template mode="ctrl" match="label[@value]">
		<xsl:value-of select="@value"/>
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template mode="ctrl" match="label[@default-value and @value='']">
		<xsl:value-of select="@default-value"/>
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template mode="ctrl" match="label">
		<xsl:apply-templates/>
	</xsl:template>
	
	<!-- **************************** Text ************************************* -->
	
	<xsl:template mode="ctrl" match="textField[@disabled='true']">
		<xsl:value-of select="@value"/>
	</xsl:template>
	
	<xsl:template mode="ctrl" match="textField">
		<xsl:choose >
			<xsl:when test="@calendar">
				<table>
					<tr>
						<td>
							<input type="text" name="{@id}" value="{@value}">
								<xsl:apply-templates select="@maxlength"/>
								<xsl:call-template name="stdattrs"/>
							</input>
						</td>
						<td>
							<img src="{$context}/{@src}" onclick="jscalendarPopUpCalendar(this,document.getElementById('{@id}'), '{@calendar}')"/>  
						</td>
					</tr>
				</table>
			</xsl:when>
			<xsl:otherwise> 
				<input type="text" name="{@id}" value="{@value}">
					<xsl:apply-templates select="@maxlength"/>
					<xsl:call-template name="stdattrs"/>
				</input>
			</xsl:otherwise>
		</xsl:choose>
		<xsl:apply-templates/>
	</xsl:template>
	
	
	<!-- **************************** Text Area ************************************* -->
	
	<xsl:template mode="ctrl" match="textArea[@disabled='true']">
		<span class="xform-textarea">
			<xsl:value-of select="@value"/>
		</span>
	</xsl:template>
	
	<xsl:template mode="ctrl" match="textArea">
		<textarea name="{@id}" rows="{@rows}" cols="{@cols}" class="xform-textarea">
			<xsl:if test="@wrap">
				<xsl:attribute name="wrap"><xsl:value-of select="@wrap"/></xsl:attribute>
			</xsl:if>
			<xsl:if test="@readonly">
				<xsl:attribute name="readonly">true</xsl:attribute>
			</xsl:if>
			<xsl:call-template name="stdattrs"/>
			<xsl:value-of select="@value"/>
		</textarea>
		<xsl:apply-templates/>
	</xsl:template>
	
	
	<!-- **************************** Password ************************************* -->
	
	<xsl:template mode="ctrl" match="password[@disabled='true']">
		<xsl:text>****</xsl:text>
	</xsl:template>
	
	<xsl:template mode="ctrl" match="password">
		<input type="password" name="{@id}" value="{@value}">
			<xsl:apply-templates select="@maxlength"/>
			<xsl:call-template name="stdattrs"/>
		</input>
		<xsl:apply-templates/>
	</xsl:template>
	
	
	<!-- **************************** CheckBox ************************************* -->
	
	<xsl:template mode="ctrl" match="checkBox">
		<input type="checkbox" name="{@id}" value="x">
			<xsl:call-template name="stdattrs"/>
			<xsl:if test="@selected='true'">
				<xsl:attribute name="checked">checked</xsl:attribute>
			</xsl:if>
			<xsl:if test="@disabled='true'">
				<xsl:attribute name="disabled">disabled</xsl:attribute>
			</xsl:if>
		</input>
		<input type="hidden" name="{@id}.valid" value="x"/>
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template mode="ctrl"  match="checkBoxes">
		<xsl:apply-templates/>
	</xsl:template>
	
	<!-- **************************** Radio Button ************************************* -->
	
	<xsl:template mode="ctrl"  match="radioButton">
		<input type="radio" name="{@group-id}" value="{@id}">
			<xsl:call-template name="stdattrs"/>
			<xsl:if test="@selected='true'">
				<xsl:attribute name="checked">checked</xsl:attribute>
			</xsl:if>
			<xsl:if test="@disabled='true'">
				<xsl:attribute name="disabled">disabled</xsl:attribute>
			</xsl:if>
		</input>
		<input type="hidden" name="{@id}.valid" value="x"/>
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template mode="ctrl"  match="radioButtons">
		<xsl:apply-templates/>
	</xsl:template>
	
	<!-- **************************** ListBox / ComboBox ************************************* -->
	
	<!-- single selection list -->
	<xsl:template mode="ctrl" match="listBox1">
		<select name="{@id}">
			<xsl:if test="@disabled='true'">
				<xsl:attribute name="disabled">disabled</xsl:attribute>
			</xsl:if>
			<xsl:apply-templates select="@rows"/>
			<xsl:call-template name="stdattrs"/>
			<xsl:apply-templates/>
		</select>
		<input type="hidden" name="{@id}.valid" value="x"/>
	</xsl:template>
	
	
	<!-- multiple selection lisbox -->
	<xsl:template mode="ctrl" match="listBoxN">
		<select name="{@id}" multiple="multiple">
			<xsl:if test="@disabled='true'">
				<xsl:attribute name="disabled">disabled</xsl:attribute>
			</xsl:if>
			<xsl:apply-templates select="@rows"/>
			<xsl:call-template name="stdattrs"/>
			<xsl:apply-templates/>
		</select>
		<input type="hidden" name="{@id}.valid" value="x"/>
	</xsl:template>
	
	<!-- option of list -->
	<xsl:template match="listItem">
		<xsl:if test="not(@hidden='true')">  <!-- ignore hidden elements -->
			<option value="{@id}">
				<xsl:if test="@selected='true'">
					<xsl:attribute name="selected">selected</xsl:attribute>
				</xsl:if>
				<xsl:value-of select="@label"/>
			</option>
		</xsl:if>
	</xsl:template>
	
	<!-- **************************** File Upload ************************************* -->
	
	<xsl:template mode="ctrl" match="fileUpload[@disabled='true']">
		<xsl:value-of select="@filename"/>
	</xsl:template>
		
	<xsl:template mode="ctrl" match="fileUpload">
		<input type="file" name="{@id}" value="{@filename}">
			<xsl:apply-templates select="@maxlength"/>
			<xsl:apply-templates select="@accept"/>
			<xsl:call-template name="stdattrs"/>
		</input>
		<xsl:apply-templates/>
	</xsl:template>
	
	<!-- **************************** Default Rule ************************************* -->
	
	<!-- ignore parameter elements -->
	<xsl:template match="param"/>
	
	<!-- copies the common html attributes -->
	<xsl:template name="stdattrs">
		<xsl:apply-templates select="@align"/>
		<xsl:apply-templates select="@id"/>
		<xsl:apply-templates select="@title"/>
		<xsl:apply-templates select="@size"/>
		<xsl:apply-templates select="@tabindex"/>
		<xsl:apply-templates select="@accesskey"/>
		<xsl:apply-templates select="@style"/>
		<xsl:apply-templates select="@onclick"/>
		<xsl:apply-templates select="@ondblclick"/>
		<xsl:apply-templates select="@onchange"/>
		<xsl:apply-templates select="@onfocus"/>
		<xsl:apply-templates select="@onblur"/>
	</xsl:template>

</xsl:stylesheet>